package com.example.lettcode._202411._20241113;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/*
217. 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false 。

示例 1：
输入：nums = [1,2,3,1]
输出：true
解释：
元素 1 在下标 0 和 3 出现。

示例 2：
输入：nums = [1,2,3,4]
输出：false
解释：
所有元素都不同。

示例 3：
输入：nums = [1,1,1,3,3,4,3,2,4,2]
输出：true
 */
public class _02_cun_zai_chong_fu_yuan_su {
    public static void main(String[] args) {
        int[] ints = {1,1,1,3,3,4,3,2,4,2};
        System.out.println(containsDuplicate(ints));
    }

    /*
        哈希表
     */
    public static boolean containsDuplicate(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])) {
                return true;
            }
            map.put(nums[i], i);
        }
        return false;
    }

    public static boolean containsDuplicate2(int[] nums) {
        Arrays.sort(nums);
        for (int i = 0; i < nums.length-1; i++) {
            if (nums[i] == nums[i+1]) {
                return true;
            }
        }
        return false;
    }
}
